/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package util.usuario.seguridad;

/**
 *
 * @author Rdelacruz
 */
public class PermisosTablaImpl 
implements PermisosTabla
{    
    private final Actualizacion actualizacion;
    private final Insercion insercion;
    
    private boolean eliminar;
    
    public PermisosTablaImpl() {
        actualizacion = new Actualizacion();
        actualizacion.permitida = false;
        
        insercion = new Insercion();
        insercion.permitida = false;
        
        eliminar = false;
    }

    public Actualizacion actualizar() {
        actualizacion.permitida = true;
        //actualizacion.tipo = AlcanceOperacion.TODOS_LOS_REGISTROS;
        return actualizacion;
    }
    
    public Actualizacion actualizar(Condicion condicion) {
        actualizacion.condicionExterna = condicion;
        return actualizar();
    }

    public PermisosTablaImpl eliminar() {
        eliminar = true;
        return this;
    }

    public Insercion insertar() {
        insercion.permitida = true;
        return insercion;
    }
    
    
    //NOTA: No veo la necesidad de implementar condicion externa para insertar
    //public Insercion insertar(Condicion condicion) {
    //    insercion.condicionExterna = condicion;
    //    return insertar();
    //}
       
    
    @Override
    public boolean puedeInsertar() {
        return insercion.permitida;
    }

    @Override
    public boolean puedeInsertar(String columna) {
        return insercion.puedeModificarColumna(columna);
    }

    @Override
    public boolean puedeInsertar(String columna, Object valor) {
        return insercion.puedeModificarValor(columna,valor);
    }
    
    @Override
    public boolean puedeInsertarActualizar(String columna) {
        return puedeInsertar(columna) || puedeActualizar(columna);
    }
    
    @Override
    public boolean puedeActualizarRegistro(Object obj) {        
        return actualizacion.puedeModificarRegistro(obj);        
    }
    
    @Override
    public boolean puedeActualizarTodosLosRegistros() {
        return actualizacion.puedeModificarTodosLosRegistros();
    }
    
        
    @Override
    public boolean puedeActualizar(String columna) {
        return actualizacion.puedeModificarColumna(columna);
    }
    
    @Override
    public boolean puedeActualizar(String columna, Object valor) {
        return actualizacion.puedeModificarValor(columna,valor);
    }
    
    
    @Override
    public boolean puedeEliminar() {
        return eliminar;
    }    

    @Override
    public String[] getValoresPermitidosParaInsertarColumna(String columna) {
        return insercion.getValoresPermitidosParaColumna(columna);
    }
        
    @Override
    public String[] getValoresPermitidosParaActualizarColumna(String columna) {
        return actualizacion.getValoresPermitidosParaColumna(columna);
    }



    
    
}
